#pragma once
#ifndef _TIMER_H_
#define _TIMER_H_
#include <functional>
#include<graphics.h>
#include<iostream>

using namespace std;

class Timer {
public:
    Timer() = default;
    ~Timer() = default;

    void restart();

    void set_wait_time(int val);

    void set_one_shot(bool flag);

    // 绑定一个callback回调函数以便用到不同的定时工具
    void set_callback(function<void()> callback);

    void pause();

    void resume();
    // 核心
    void on_update(int delta);

protected:
    int pass_time = 0;      // 已过时间
    int wait_time = 0;      // 等待时间
    bool paused = false;    // 是否暂停
    bool shotted = false;   // 是否触发
    bool one_shot = false;  // 单次触发
    function<void()> callback;
};

#endif